package com.hjm.strategy.kdb;

import cn.hutool.http.HttpUtil;
import com.hjm.common.api.ls.leshua.ls.ImageUtil;
import com.hjm.framework.config.BlueConfig;
import com.hjm.framework.config.CustomConfig;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Base64;

public class UploadUtil {

    /**
     * 根据上传策略动态转换本地路径为 base64（支持本地文件和远程图片）
     * 
     * @param localPath 原始路径（以 /upload/xxx.jpg 或 /agent/xxx.jpg 开头）
     * @return base64 编码字符串
     */
    public static String resolveBase64(String localPath) throws IOException {
        String base64 = "";

        if (CustomConfig.getUploadStrategy().equalsIgnoreCase("1")) {
            // 本地路径：如 D:/upload/xxx.jpg
            String absolutePath = BlueConfig.getAgentPath() + localPath.substring(localPath.indexOf("agent") + "agent".length());
            base64 = ImageUtil.encodeImageToBase64(absolutePath);
        } else if (CustomConfig.getUploadStrategy().equalsIgnoreCase("2")) {
            // 远程地址（通过 HTTP 获取图片字节流）
            String fullUrl = CustomConfig.getImgUrl() + localPath;
            base64 = convertImageToBase64(fullUrl);
        }

        return base64;
    }

    /**
     * 下载远程图片并转换为 Base64（用于 uploadStrategy=2）
     */
    public static String convertImageToBase64(String imagePath) throws IOException {
        // 通过 Hutool 下载图片字节流
        byte[] imageBytes = HttpUtil.downloadBytes(imagePath);
        // Base64 编码
        return Base64.getEncoder().encodeToString(imageBytes);
    }
}
